package leetcode;

/*
821. 字符的最短距离
给定一个字符串 S 和一个字符 C。返回一个代表字符串 S 中每个字符到字符串 S 中的字符 C 的最短距离的数组。
示例 1:
输入: S = "loveleetcode", C = 'e'
输出: [3, 2, 1, 0, 1, 0, 0, 1, 2, 2, 1, 0]
说明:
字符串 S 的长度范围为 [1, 10000]。
C 是一个单字符，且保证是字符串 S 里的字符。
S 和 C 中的所有字母均为小写字母。
*/

import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class problems_821 {
    public static void main(String[] args) {
        System.out.println(new Solution().shortestToChar("loveleetcode", 'e'));
    }

    static class Solution {
        public int[] shortestToChar(String S, char C) {
            int[] ret = new int[S.length()];
            Arrays.fill(ret, Integer.MAX_VALUE);
            //
            for (int i = 0; i < S.length(); i++) {
                // 遍历寻找关键点
                if (S.charAt(i) != C) continue;
                // 关键点修改
                for (int j = 0; j < S.length(); j++) {
                    int index = Math.abs(i-j);
                    index = Math.min(index, ret[j]);
                    ret[j] = index;
                }
            }
            return ret;
        }
    }
}